<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2020/7/24 0024
 * Time: 4:58
 */

namespace app\service;


use phpmailer\BaseException;
use think\Db;

/**
 * 轮播服务层
 * @author   juzi
 * @blog    https://blog.csdn.net/juziaixiao
 * @version  0.0.1
 * @datetime 2020年7月24日04:58:50
 */
class ExpressService extends BaseService
{
    /**
     * 获取列表
     * @author   juzi
     * @blog    https://blog.csdn.net/juziaixiao
     * @version  0.0.1
     * @datetime 2020年7月22日10:57:35
     * @desc    description
     * @param   [array]          $params [输入参数]
     */
    public static function ExpressList($params = [])
    {
        $params['table']='express';
        $data=self::DataList($params);
//        $where = empty($params['where']) ? [['id','>',0]] : $params['where'];
//        $page = $params['page'] ? true : false;
//        $number = isset($params['number']) ? intval($params['number']) : 10;
//        $field = empty($params['field']) ? '*' : $params['field'];
//        $m = isset($params['m']) ? intval($params['m']) : 0;
//        $n = isset($params['n']) ? intval($params['n']) : 10;
//        // 获取列表
//        $data = Db::name('express')->where($where)->field($field)->order('id asc');
//        if($page)
//        {
//            $data=$data->paginate($number, false, ['query' => request()->param()]);
//            $data=$data->toArray()['data'];
//        }else{
//            if($n){
//                $data=$data->limit($m, $n)->select();
//            }else{
//                $data=$data->select();
//            }
//        }

        return self::DataDealWith($data);

    }


    /**
     * 总数
     * @author   juzi
     * @blog    https://blog.csdn.net/juziaixiao
     * @version 1.0.0
     * @date    2020年7月21日13:29:33
     * @desc    description
     * @param    [array]          $where [条件]
     */
    public static function ExpressTotal($where){
        return (int) Db::name('express')->where($where)->count();
    }

    /**
     * 数据处理
     * @author   juzi
     * @blog    https://blog.csdn.net/juziaixiao
     * @version 1.0.0
     * @date    2020年7月21日13:29:33
     * @desc    description
     * @param   [array]          $data [快递数据 二维数组]
     */
    public static function DataDealWith($data){

        if(!empty($data) && is_array($data))
        {
            foreach($data as &$v)
            {
                if(is_array($v))
                {
                    //合作状态
                    if(isset($v['status']))
                    {
                        if(1 == $v['status'])
                        {
                            $v['status_title']='合作中';

                        }else{
                            $v['status_title']='已停止';
                        }
                    }



                }
            }
        }

        return DataReturn('获取成功',0,$data);
    }



    /**
     * 数据校验
     * @author   juzi
     * @blog     https://blog.csdn.net/juziaixiao
     * @version  1.0.0
     * @datetime  2020年7月23日12:06:23
     * @param    [array]          $params [输入参数]
     */
    public static function VaryData($params){
        // 公共数据校验请求参数
        $p = [
            [
                'checked_type' => 'empty',
                'key_name' => 'title',
                'error_msg' => '名称不能为空',
                'error_code' => 40001,
            ],
            [
                'checked_type' => 'empty',
                'key_name' => 'phone',
                'error_msg' => '客服电话不能为空',
                'error_code' => 40002,
            ],
            [
                'checked_type' => 'empty',
                'key_name' => 'address',
                'error_msg' => '查询地址不能为空',
                'error_code' => 40003,
            ],
//            [
//                'checked_type' => 'empty',
//                'key_name' => 'fee',
//                'error_msg' => '快递费不能为空',
//                'error_code' => 40004,
//            ],
            [
                'checked_type' => 'empty',
                'key_name' => 'status',
                'error_msg' => '查询地址不能为空',
                'error_code' => 40005,
            ],


        ];

        $ret=ParamsChecked($params, $p);

        if(true !== $ret)
        {
            //$error_arr[0]  $error_arr[1]
            $error_arr = explode(',', $ret);
            throw new BaseException(['code'=>403 ,'errorCode'=>$error_arr[1],'msg'=>$error_arr[0],'status'=>false,'debug'=>false ]);
        }
//        //名称重复判断
        $check_data = [
            'where' => [['title', '=', $params['title']],],
            'table' => 'express',
            'params' => $params,
            'msg' => '名称不能重复',
            'error_code' => 40006,
        ];
        CategoryService::CheckTitle($check_data);
        return true;

    }


    /**
     * 数据保存
     * @author   juzi
     * @blog     https://blog.csdn.net/juziaixiao
     * @version  1.0.0
     * @datetime 2020年7月10日11:08:21
     * @param    [array]          $params [输入参数]
     */
    public static  function SaveExp($data){
        Db::startTrans();
        // 添加/编辑
        if (empty($data['id']))
        {
            $industry_id = Db::name('express')->insertGetId($data);
            if (!$industry_id) {
                Db::rollback();
                throw new BaseException(['code'=>403 ,'errorCode'=>'40007','msg'=>'添加快递失败','status'=>false,'debug'=>false]);
            }
        } else {
            $data['update_time'] = TIMESTAMP;
            $re = Db::name('express')->where(['id' => intval($data['id'])])->update($data);
            if (!$re) {
                Db::rollback();
                throw new BaseException(['code' => 403, 'errorCode' => '40008', 'msg' => '修改快递失败', 'status' => false, 'debug' => false]);
            }
        }
        Db::commit();
        return true;
    }
}